//当前选中节点
var node;
$(function() {
	var operatorType = "origina";
	// ajax调用不使用缓存
	$.ajaxSetup( {
		cache : false
	});
	$("#sysOrganization_tree").jstree( {// menu_tree 为 由Jquery选择器选中的DIV容器的ID
				"themes" : {
					"theme" : "classic",
					"dots" : true,
					"icons" : true
				},
				"json_data" : {
					"ajax" : {
						"url" : "findAllSysOrganizations",
						"data" : function(n) {
							return {
								id : n.attr ? n.attr("id") : 0
							};
						}
					}
				},
				"core" : {
					"strings" : {
						"loading" : "组织机构加载中……"
					}
				},
				// 插件使用右键菜单支持自定义右键菜单
				"plugins" : [ "themes", "json_data", "ui", "crrm" ]
			});
	$("#sysOrganization_tree")
			.bind(
					"select_node.jstree",
					function(e, data) {
						operatorType = "origina";
						node = data.rslt.obj;
						$("#originaDiv").show();
						$("#searchDiv").hide();
						$("#addedDiv").hide();
						$('#addUserButton').removeAttr('disabled');
						clearUserOrganizationInfo(operatorType);
						jQuery("#userOriginaList")
								.jqGrid(
										'setGridParam',
										{
											url : "findSysUsersBySysOrganizationId?sysOrganizationBean.id="
													+ node.attr("id"),
											page : 1
										}).trigger("reloadGrid");

					});
	// 组织机构原有人员
	jQuery("#userOriginaList").jqGrid(
			{
				datatype : "json",
				colNames : [ '真实姓名', '出生日期', '性别' ],
				colModel : [ {
					name : 'realName',
					index : 'realName',
					width : 90,
					sortable : false
				}, {
					name : 'birthDay',
					index : 'birthDay',
					width : 80,
					sortable : false
				}, {
					name : 'gender',
					index : 'gender',
					width : 60,
					sortable : false
				} ],
				loadui : 'disable',
				loadError : function(xhr, status, error) {
					isNotLoginError(xhr);
				},
				multiselect : true,
				loadComplete : function(xhr) {
					$.ajax( {
						type : "POST",
						url : "findSysUsersBySysOrganizationId",
						data : "sysOrganizationBean.id=" + node.attr("id"),
						success : function(data) {
							$.each(data.sysUserBeans, function(i, item) {
								jQuery("#userOriginaList").jqGrid()
										.setSelection(item.id, false);
							});
						}
					});
					return xhr;
				},
				rowNum : 10,
				pager : '#userOriginaPager',
				rowList : [ 10, 20, 30, 50 ],
				sortname : 'id',
				sortorder : "desc",
				// 表格高度，可以是数字，像素值或者百分比
				height : 250,
				// 如果设置则按此设置为主，如果没有设置则按colModel中定义的宽度计算
				width : 460,
				caption : "修改组织机构原有人员",
				jsonReader : {
					// 这个元素指明表格所需要的数据从哪里开始
					root : "sysUserBeans",
					page : "pageBean.curPage", // 当前页
					total : "pageBean.totalPages", // 总页数
					records : "pageBean.totalRecords", // 总记录数
					rows : "pageBean.pageSize",// 每页显示的行数
					sort : "pageBean.sort",// 排序字段
					order : "pageBean.order",// 排序方式
					// 指明每行的数据是可以重复的，如果设为false，则会从返回的数据中按名字来搜索元素,这个名字就是colModel中的名字
					repeatitems : false
				},
				prmNames : {
					rows : "pageBean.pageSize",
					page : "pageBean.curPage",
					total : "pageBean.totalPages",
					records : "pageBean.totalRecords",
					sort : "pageBean.orderBy",
					order : "pageBean.order"
				},
				rownumbers : true,
				emptyrecords : '无记录可显示',
				shrinkToFit : false,
				// 是否要显示总记录数
				viewrecords : true
			});
	jQuery("#userOriginaList")
			.navGrid('#userOriginaPager', {
				edit : false,
				add : false,
				del : false,
				refresh : false,
				search : false
			})
			.navButtonAdd(
					'#userOriginaPager',
					{
						caption : "提交",
						buttonicon : "ui-icon-check",
						title : "提交",
						position : "last",
						onClickButton : function() {
							var ids = jQuery("#userOriginaList").jqGrid(
									'getGridParam', 'selarrrow');
							$
									.ajax( {
										type : "POST",
										url : "setSysUserBySysOrganizationId",
										data : "sysOrganizationBean.id="
												+ node.attr("id")
												+ "&sysOrganizationBean.sysUserIDs="
												+ ids,
										success : function(data) {
											if (data) {
												clearUserOrganizationInfo(operatorType);
												jQuery("#userOriginaList")
														.jqGrid(
																'setGridParam',
																{
																	url : "findSysUsersBySysOrganizationId?sysOrganizationBean.id="
																			+ node
																					.attr("id"),
																	page : 1
																}).trigger(
																"reloadGrid")
												jAlert('设置成功!');
											} else {
												jAlert('设置失败!');
											}
										},
										error : function(XMLHttpRequest,
												textStatus, errorThrown) {
											jAlert('设置失败!');
										}
									});
						}
					});
	// 组织机构新增人员
	jQuery("#userAddedList").jqGrid( {
		datatype : "json",
		colNames : [ '真实姓名', '出生日期', '性别' ],
		colModel : [ {
			name : 'realName',
			index : 'realName',
			width : 90,
			sortable : false
		}, {
			name : 'birthDay',
			index : 'birthDay',
			width : 80,
			sortable : false
		}, {
			name : 'gender',
			index : 'gender',
			width : 60,
			sortable : false
		} ],
		loadError : function(xhr, status, error) {
			isNotLoginError(xhr);
		},
		multiselect : true,
		rowNum : 10,
		pager : '#pager',
		rowList : [ 10, 20, 30, 50 ],
		sortname : 'id',
		sortorder : "desc",
		// 表格高度，可以是数字，像素值或者百分比
		height : 188,
		// 如果设置则按此设置为主，如果没有设置则按colModel中定义的宽度计算
		width : 460,
		caption : "组织机构新增人员",
		jsonReader : {
			// 这个元素指明表格所需要的数据从哪里开始
			root : "sysUserBeans",
			page : "pageBean.curPage", // 当前页
			total : "pageBean.totalPages", // 总页数
			records : "pageBean.totalRecords", // 总记录数
			rows : "pageBean.pageSize",// 每页显示的行数
			sort : "pageBean.sort",// 排序字段
			order : "pageBean.order",// 排序方式
			// 指明每行的数据是可以重复的，如果设为false，则会从返回的数据中按名字来搜索元素,这个名字就是colModel中的名字
			repeatitems : false
		},

		prmNames : {
			rows : "pageBean.pageSize",
			page : "pageBean.curPage",
			total : "pageBean.totalPages",
			records : "pageBean.totalRecords",
			sort : "pageBean.orderBy",
			order : "pageBean.order"
		},
		rownumbers : true,
		emptyrecords : '无记录可显示',
		shrinkToFit : false,
		// 是否要显示总记录数
		viewrecords : true
	});
	jQuery("#userAddedList")
			.navGrid('#pager', {
				edit : false,
				add : false,
				del : false,
				refresh : false,
				search : false
			})
			.navButtonAdd(
					'#pager',
					{
						caption : "提交",
						buttonicon : "ui-icon-check",
						title : "提交",
						position : "last",
						onClickButton : function() {
							var ids = jQuery("#userAddedList").jqGrid(
									'getGridParam', 'selarrrow');
							$
									.ajax( {
										type : "POST",
										url : "setNewSysUserBySysOrganizationId",
										data : "sysOrganizationBean.id="
												+ node.attr("id")
												+ "&sysOrganizationBean.sysUserIDs="
												+ ids,
										success : function(data) {
											if (data) {
												clearUserOrganizationInfo(operatorType);
												jQuery("#userAddedList")
														.jqGrid(
																'setGridParam',
																{
																	url : "findNotSelectedSysUsers?sysUserBean.sysOrganizationIDs="
																			+ node
																					.attr("id"),
																	page : 1
																}).trigger(
																"reloadGrid")
												jAlert('设置成功!');
											} else {
												jAlert('设置失败!');
											}
										},
										error : function(xhr, textStatus,
												errorThrown) {
											if (xhr.status == '401'
													|| xhr.status == '500') {
												isNotLoginError(xhr);
												return;
											}
											jAlert('设置失败!');
										}
									});
						}
					});
	// 查询人员
	$("#searchButton")
			.click(
					function() {
						jQuery("#userAddedList")
								.jqGrid(
										'setGridParam',
										{
											url : "findNotSelectedSysUsers?sysUserBean.sysOrganizationIDs="
													+ node.attr("id")
													+ "&"
													+ encodeURI($(
															"#searchCondition")
															.ajaxForm()
															.formSerialize()),
											page : 1
										}).trigger("reloadGrid");
					});
	// 添加人员
	$("#addUserButton")
			.click(
					function() {
						operatorType = "added";
						$('#addedBtn').removeAttr('disabled');
						$("#originaDiv").hide();
						$("#searchDiv").show();
						$("#addedDiv").show();
						jQuery("#userAddedList")
								.jqGrid(
										'setGridParam',
										{
											url : "findNotSelectedSysUsers?sysUserBean.sysOrganizationIDs="
													+ node.attr("id"),
											page : 1
										}).trigger("reloadGrid");
					});
});
function clearUserOrganizationInfo(operatorType) {
	if (operatorType == 'origina')
		jQuery("#userOriginaList").jqGrid().clearGridData();
	else
		jQuery("#userAddedList").jqGrid().clearGridData();
}
function isNotLoginError(xhr) {
	if (xhr.status == '401') {
		var errMsg = window["eval"]("(" + xhr.getResponseHeader("Error-Json")
				+ ")");
		if (errMsg.reason == 'notLogin') {
			jAlert("你还未登录,请登录!");
			window.parent.location.href = errMsg.content + "/login.jsp";
		}
	} else if (xhr.status == '500') {
		var errMsg = window["eval"]("(" + xhr.getResponseHeader("Error-Json")
				+ ")");
		if (errMsg.reason == 'insideError') {
			window.location.href = errMsg.content + "/page/error.jsp";
		}
	} else if (xhr.status == '402') {
		var errMsg = window["eval"]("(" + xhr.getResponseHeader("Error-Json")
				+ ")");
		if (errMsg.reason == 'kickRepeatLogin') {
			jAlert("对不起该账号已经在其他地方登录,你已被踢出!");
			window.location.href = errMsg.content + "/login.jsp";
		}
	}
}
